1. Field of the Invention
The invention relates to the field of network computing. More specifically, the invention relates to providing scalability and fault tolerance in a distributed network.
2. Background of the Invention
The process of maintaining a computer network so as to maximize its efficiency and productivity is very complex. Many techniques have been utilized over the years to achieve this goal. For instance, network scalability and fault tolerance techniques have been used. Network scalability addresses the issue of retaining performance levels when adding additional servers to a network. Additional servers are typically added to a network when additional processing power is required. Network managers utilize various types of networking tools to determine when to add additional servers. However, the processing efficiency of the network does not always improve with the addition of additional servers to the network.
One reason why the improvement sought by the network manager is not realized is that the work load is not distributed equally between all of the servers. In this situation, the new servers may be under-utilized while the other servers are over-burdened with work. Therefore, network managers use many hardware and software solutions in an attempt to ensure the current processing load of each of the servers is maximized efficiently.
Load balancing is a well known technique of dividing the amount of work between two or more servers. One prior art technique of load balancing requires each processing request to first access a master load balancing service (running on one of the servers) that selects which of the servers is to fulfill the request, redirecting that request as necessary.
Different techniques exist to determine which server is to handle different requests. For instance, a master load balancing service may sequentially send a first request to a first server, a second request to a second server, then send a third request to the first server if there are only two servers available to handle the request. This technique is known in the art as round robin distribution.
In other, more, advanced techniques the load balancing service analyzes the amount of work being performed by each of the alternative servers available to handle the request. This load balancing service attempts to determine which server is currently performing the least amount of work and then sends the request to that server.
As stated above, managing network fault tolerance is another technique used to improve network performance. Network fault tolerance addresses the ability to continue normal network operations when individual servers fail. As with network scalability, network managers may utilize hardware and software techniques to provide network fault tolerance.
A typical example of a fault tolerance technique is a hot stand-by server. In general, a hot stand-by server is designed to immediately handle the processing of a primary server once the primary server has failed. In some instances the fail-over to the hot stand-by server is immediate and the network experiences no interruptions of service. In other instances, the time frame between service “uptime” is more substantial. Other examples, of implementing fault tolerance include disk mirroring and RAID applications.
However, current load balancing and fault tolerance solutions are proprietary and therefore unique to individual hardware platforms or software operating systems. As applications have become more distributed across the network, a more reliable and robust method is needed to address the complexities of network scalability and fault tolerance.